package View;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.KeyEvent;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

import Controller.CtrlAjoutUtilisateur;
import Controller.CtrlListeUtilisateur;
import Controller.CtrlMain;
import Controller.CtrlSuppressionUtilisateur;
import Listener.LMenuBar;
import Model.ListeUtilisateur;
import Model.Utilisateur;


public class ViewMain extends JFrame{
	private static final long serialVersionUID = 1L;
	private Utilisateur User;

	private int _Width = 1000;
	private int _Heigth = 800;


	public ViewMain(Utilisateur utilisateur, ListeUtilisateur listeUser, CtrlMain ctrlMain) {
		User = utilisateur;
		JMenuBar menuBar;
		JMenuItem menuItem;
		CtrlListeUtilisateur ctrlListUtil = new CtrlListeUtilisateur(listeUser);
		JDesktopPane dp = new JDesktopPane();


		// Barre de menu
		 menuBar = new JMenuBar();
		
		// Menu File
		JMenu menu = new JMenu("File");
		menu.setMnemonic(KeyEvent.VK_F);
		
		
		// Sous menu de File
		menuItem = new JMenuItem("Utilisateur", KeyEvent.VK_U);
		menuItem.addActionListener(new LMenuBar(ctrlMain));
		menu.add(menuItem);

		menuItem = new JMenuItem("A Propos", KeyEvent.VK_P);
		menuItem.addActionListener(new LMenuBar(ctrlMain));
		menu.add(menuItem);

		menuItem = new JMenuItem("Quit", KeyEvent.VK_Q);
		menuItem.addActionListener(new LMenuBar(ctrlMain));
		menu.add(menuItem);

		menuBar.add(menu);
		
		
		
		if(User.getNiveauPrivilege().isAdmin()) {
			
			// Menu Gestion
			menu = new JMenu("Gestion");
			menu.setMnemonic(KeyEvent.VK_G);
			
	
			// Sous menu de Gestion
			menuItem = new JMenuItem("Ajout Utilisateur", KeyEvent.VK_A);
			menuItem.addActionListener(new LMenuBar(ctrlMain));
			menu.add(menuItem);
	
			menuItem = new JMenuItem("Effacer Utilisateur", KeyEvent.VK_E);
			menuItem.addActionListener(new LMenuBar(ctrlMain));
			menu.add(menuItem);
			
	
			menuBar.add(menu);
			
			
			CtrlSuppressionUtilisateur ctrlSupp = new CtrlSuppressionUtilisateur(listeUser);
			CtrlAjoutUtilisateur ctrlAdd = new CtrlAjoutUtilisateur(listeUser);
		

			int widthStep = _Width / 3;
			int heigthStep = _Heigth / 2;
				
			dp.add(createIframe(ctrlAdd.getPanel(), 0, 0, widthStep, heigthStep));
			dp.add(createIframe(ctrlSupp.getPanel(), widthStep, 0, widthStep, heigthStep));
			dp.add(createIframe(ctrlListUtil.getPanel(), widthStep*2, 0, widthStep, heigthStep));
			dp.add(createIframe(new PanneauTableauUtilisateur(listeUser), 0, heigthStep, widthStep, heigthStep));
			dp.add(createIframe(new PanneauTableauUtilisateur(listeUser), widthStep, heigthStep, widthStep, heigthStep));
			dp.add(createIframe(new PanneauTreeUtilisateur(listeUser), widthStep * 2, heigthStep, widthStep, heigthStep));
		}
		else
			dp.add(createIframe(ctrlListUtil.getPanel(), 0, 0, 800, 600));

		this.add(menuBar,BorderLayout.NORTH);
		this.add(dp,BorderLayout.CENTER);
		this.setMinimumSize(new Dimension(_Width, _Heigth));
		this.pack();
		this.setVisible(true);
	}
	
	
	public void buildDialog(String title, String message) {
		JOptionPane.showMessageDialog(this, message, title, JOptionPane.OK_OPTION);
	}
	
	private JInternalFrame createIframe(Component comp, int x, int y, int width, int heigth) {
		JInternalFrame iFrameAdd = new JInternalFrame("test", true, false, true, false);
		iFrameAdd.add(comp);
		iFrameAdd.setVisible(true);
		iFrameAdd.setBounds(x, y, width, heigth);
		
		return iFrameAdd;
	}

}
